# -*- coding: utf-8 -*-
from time import sleep

import allure
from common.page import Page
from common.utils import Utils
from dz_service.page_elements.el_common import common
from dz_service.page_elements.el_login import login
from dz_service.page_elements.el_dormancy import dormancy, address
from dz_service.function.fun_common import Common
from dz_service.function.fun_service_utils import ServiceUtils
from dz_service.page_elements.el_update_clientinfo import update_clientinfo


class Dormancy:

    def agree(self, module, page, element):
        x = Page.element(module, page, element).get_attribute('class')
        i = 0
        sleep(2)
        Page.js_bottom()
        while 'disabled' in x:
            Page.js_bottom()
            if 'disabled' not in x:
                break
            x = Page.element(module, page, element).get_attribute('class')
            i = i + 1
            if i > 3:
                break
        sleep(1)
        Page.click(module, page, element)

    @allure.step('step:休眠户激活数据初始化')
    def init_uf_dormancy(self, clinet_id):
        Utils.search_for_param('uf', 'sql/service_sql.json', 'initial_uf_sql_dormancy_FUNDACCOUNT', [clinet_id],
                               '设置休眠户。')
        Utils.search_for_param('uf', 'sql/service_sql.json', 'initial_uf_sql_dormancy_STOCKHOLDER', [clinet_id],
                               '设置休眠户。')

    @allure.step('step:休眠户登录')
    def dormancy_login(self, username, password, picture):
        Page.send_key(login, '登录页面', '用户名', username)
        Page.send_key(login, '登录页面', '密码', password)
        Page.send_key(login, '登录页面', '图片验证码', picture)
        Page.click(login, '登录页面', '登录', is_els=True, num=2)

    @allure.step('step:休眠户激活_前置判断')
    def dormancy_activation(self):
        Page.click(dormancy, '休眠户', '立刻激活')
        ServiceUtils.assert_element([(dormancy, '休眠户', '休眠户激活', '休眠户激活', '休眠户激活文本对比失败')], is_els=True, num=[0, 1],
                                    log='休眠户激活文本对比成功')
        Page.click(common, '公共页面', '立即办理')
        assert len(Page.elements(common, '公共页面', '已满足')) == 4
        Page.click(common, '公共页面', '下一步')
        assert Page.elements(dormancy, '休眠户', '中登休眠') is not None
        Page.click(common, '公共页面', '下一步')

    @allure.step('step:休眠户激活_身份信息确认')
    def dormancy_upload_id_card(self, positive_pic, back_pic, head_pic):
        positive_pic_path = Utils.get_test_pic(positive_pic)
        back_pic_path = Utils.get_test_pic(back_pic)
        head_pic_path = Utils.get_test_pic(head_pic)
        # 上传身份信息
        Common.upload_id_card_pic(positive_pic_path, back_pic_path, head_pic_path)
        # 确定身份信息
        Page.click(common, '公共页面', '确定', is_els=True, num=0)
        # # 若弹出一人多户同步弹窗提示，则点击确定
        # if Page.element_is_exist(id_card, '检查元素', '一人多户同步提示弹窗'):
        #     sleep(1)
        #     Page.click(id_card, "身份证信息检查", "一人多户弹框确定按钮", log_info="此次修改的信息将同步到您在我司开立的其他账户。--已确认")
        # 常住地址确认
        # Page.click(common, '公共页面', '下一步')
        if Page.element(address, '联系地址', '是否常住地址'):
            Page.click(address, '联系地址', '确定', is_els=True, num=2)
        try:
            els = Page.elements(address, '联系地址', '确定')
            for el in els:
                Page.el_js_click(el)
        except:
            pass

    @allure.step('step:休眠户激活_确认职业，联系人信息')
    def dormancy_work_info(self):
        sleep(0.3)
        Page.click(common, '公共页面', '下一步')
        sleep(0.3)
        try:
            els = Page.elements(common, '公共页面', '确定')
            for el in els:
                Page.el_js_click(el)
        except:
            pass
        if Page.element(address, '联系地址', '是否常住地址'):
            Page.click(address, '联系地址', '确定', is_els=True, num=2)

        # 选择职业
        Page.click(address, '职业信息', '职业')
        Page.click(address, '职业信息', '完成', is_els=True, num=1)
        # 选择职务
        Page.click(address, '职业信息', '职务')
        Page.click(address, '职业信息', '完成', is_els=True, num=2)
        # 选择工作单位
        Page.send_key(address, '职业信息', '工作单位', msg='工作单位')
        # 选择年收入
        sleep(0.5)
        Page.click(address, '职业信息', '年收入')
        Page.click(address, '职业信息', '确定年收入', is_els=True, num=3)
        sleep(0.3)
        Page.click(common, '公共页面', '下一步')
        # 其他信息维护
        # 控制人类型
        Page.click(update_clientinfo, '其他信息', '控制人类型')
        Page.clear_select('controlType')
        Page.select_location('controlType', '本人')
        Page.click(address, '职业信息', '完成', is_els=True, num=0)
        # 修改受益人类型
        Page.click(update_clientinfo, '其他信息', '受益人类型')
        Page.clear_select('benefitType')
        Page.select_location('benefitType', "本人")
        Page.click(address, '职业信息', '完成', is_els=True, num=2)
        sleep(0.3)
        Page.click(common, '公共页面', '下一步')
        # 第二联系人与本人关系
        Page.send_key(update_clientinfo, '第二联系人相关信息', '姓名', '测试姓名')
        Page.clear_edit('secondContactPhone')
        Page.click(update_clientinfo, '公共元素', '修改', is_els=True, num=1)
        Page.send_key(update_clientinfo, '第二联系人相关信息', '电话', "13111111111", is_els=True, num=1)
        Page.click(update_clientinfo, '第二联系人相关信息', '与本人关系')
        Page.click(address, '职业信息', '完成', )
        sleep(0.3)
        Page.click(common, '公共页面', '下一步')

    @allure.step('step:休眠户激活_上传录制视频')
    def dormancy_upload_video(self, video):
        video_path = Utils.get_test_pic(video)
        Page.send_key(common, '公共页面', '开始录制', video_path)
        sleep(2)
        Page.click(address, '联系地址', '确定', is_els=True, num=2)

    @allure.step('step:签署协议')
    def dormancy_sign_agreement(self, n=5):
        self.agree(common, '签署协议', '点击签署')
        for i in range(0, n):
            sleep(3)
            self.agree(common, '签署协议', '本人已知悉')

    @allure.step('step:客户签名')
    def dormancy_signature(self):
        Page.click(common, '客户签名', '选择签名')
        Page.click(common, '客户签名', '客户签名')
        Page.click(common, '公共页面', '确定')

    @allure.step('step:休眠户激活_短信验证')
    def dormancy_sms(self, message_code, check_info):
        Page.click(common, '签署协议', '我已阅读并同意')
        Page.click(common, '手机号更新', '获取验证码')
        Page.send_key(common, '手机号更新', '输入验证码', message_code)
        Page.click(common, '公共页面', '提交')
        Common.check_result_page(check_info)
